<?php  
require_once('../zAPI/properties.inc.php');
require_once( ROOT_CLASS . 'Kernel.class.php');
require_once( $kernel->getClass("Util") );
require_once( $kernel->getClass("BusinessObject") );
require_once( ROOT_CLASS . 'DataObject/AlunoDO.class.php');
require_once( ROOT_CLASS . 'DataObject/PessoaDO.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');
require_once( ROOT_CLASS . 'zAccess/zAccess.class.php' );
?>



<?php

class AlunoController{
	
	function __construct(){
		$AccessAction = new AccessAction();
		$AccessAction->validSessionUsuario();
    }
	
	function listarAlunos($instanceDB, $postRequest, $getRequest){
		
		$limit = $postRequest["limit"]; // var usada para controlar o limite de paginação
		$start = $postRequest["start"]; // variável usada para controlar o in?cio de paginação
		$filter = $postRequest["query"];
		
		$alunoBO = new AlunoBO();
		
		$result = $alunoBO->listarAlunos($instanceDB, $limit, $start, $filter);
		
		
		$retorno = "{";
			$retorno .= "success:true,";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result["object"]); $i++){
				$dados .= $aux . utf8_encode( $result["object"][$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "results:".$result["qtdRegistros"].",";
			$retorno .= "message: 'Alunos listados com sucesso',";
			$retorno .= "elements:[" . $dados . "]";
		$retorno .= "}";
		
		return $retorno; 
	}
	
	function inserir($instanceDB, $postRequest, $getRequest){
		
		$alunoBO = new AlunoBO();
		$pessoaBO = new PessoaBO();
		
		$alunoDO = new AlunoDO();
		$pessoaDO = new PessoaDO();
	
		$alunoDO->loadDataObjectByPost( $postRequest, TRUE );
		$pessoaDO->loadDataObjectByPost( $postRequest, TRUE );
		
		if($pessoaBO->verificaExistencia($instanceDB, $pessoaDO->get("rg"), $pessoaDO->get("cpf"))){
			$result = $pessoaBO->inserir($instanceDB, $pessoaDO);
			$alunoDO->set("Pessoa_codigo", $result->get("codigo"));
			
			$result = $alunoBO->inserir($instanceDB, $alunoDO);
			
			if ( $result === FALSE ){
				$retorno = "{";
				$retorno .= "success : false,";
				$retorno .= "message : 'Não foi possível inserir as informações'";
				$retorno .= "}";
			} else {
				$retorno = "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Inserido com com sucesso',";
				$dados = "";
				$aux = "";
				for ($i = 0; $i < count($result); $i++){
					$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
					$aux = ",";
				}
				$retorno .= "elements : [" . $dados . "]";
				$retorno .= "}";
			}
		}else{
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'CPF ou RG já cadastrados'";
			$retorno .= "}";
		}
		
		return $retorno;
		
	}
	
	function alterar($instanceDB, $postRequest, $getRequest){
		$alunoBO = new AlunoBO();
		$pessoaBO = new PessoaBO();
		
		// cria objeto de dados para manipulação
		$alunoDO = new AlunoDO();
		$pessoaDO = new PessoaDO();
		
		$alunoDO->loadDataObjectByPost( $postRequest, TRUE );
		$pessoaDO->loadDataObjectByPost( $postRequest, TRUE );
		
		$resultadoPessoa = $pessoaBO->alterar( $instanceDB, $pessoaDO );
		$resultadoAluno = $alunoBO->alterar( $instanceDB, $alunoDO );
			
		if ( $resultadoPessoa === FALSE || $resultadoAluno === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível alterar o registro.'";
			$retorno .= "}";
		}else {
			$retorno = "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Alterado com sucesso!'";
			$retorno .= "}";
		}
		
		return $retorno;
		
		
	}
	
	
	function excluir($instanceDB, $postRequest, $getRequest){
		$alunoBO = new AlunoBO();
		$pessoaBO = new PessoaBO();
		
		// cria objeto de dados para manipulação
		$alunoDO = new AlunoDO();
		$pessoaDO = new PessoaDO();
		
		$codigoAluno = $postRequest["codigoAluno"];
		$pessoaDO->set( "codigo", $codigoAluno );
		$alunoDO->set( "Pessoa_codigo", $codigoAluno );
		
		$resultadoPessoa = $pessoaBO->excluir( $instanceDB, $pessoaDO );
		$resultadoAluno = $alunoBO->excluir( $instanceDB, $alunoDO );
		
		if ( $resultadoPessoa === FALSE || $resultadoAluno === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível excluir o registro.'";
			$retorno .= "}";
			
		}else {
			$retorno = "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Excluído com sucesso!'";
			$retorno .= "}";
			
		}
		
		return $retorno;
		
		
	}
	
}


?>